package com.example.study2;

import java.util.ArrayList;
import java.util.List;

public class ArrayListConstruction {
    public static void main(String[] args) {

        // ==================== 示例1：无参构造函数 ====================
        // 创建默认初始容量为10的空列表（JDK 8+中，首次添加元素时才分配数组空间）
        ArrayList<String> defaultList = new ArrayList<>();
        defaultList.add("Java");    // 首次添加元素时分配容量为10的数组
        defaultList.add("Python");
        defaultList.add("C++");
        System.out.println("默认构造列表: " + defaultList);
        // 输出: [Java, Python, C++]

        // ==================== 示例2：指定初始容量 ====================
        // 创建初始容量为50的列表，适合已知元素数量的场景
        ArrayList<Integer> capacityList = new ArrayList<>(50);
        // 预先分配足够容量，避免频繁扩容
        for (int i = 0; i < 20; i++) {
            capacityList.add(i * 10);  // 添加20个元素，不会触发扩容
        }
        System.out.println("指定容量列表大小: " + capacityList.size());
        // 输出: 20

        // ==================== 示例3：基于集合构造 ====================
        // 使用现有集合初始化新ArrayList（浅拷贝）
        List<String> existingList = List.of("Apple", "Banana", "Orange"); // 创建不可变列表
        ArrayList<String> collectionList = new ArrayList<>(existingList);
        System.out.println("基于集合构造: " + collectionList);
        // 输出: [Apple, Banana, Orange]
    }
}